The present disclosure relates to network management, and more specifically, to deadlock resolution in end-to-end credit protocol.
Server farms, also known as data centers, are becoming more and more utilized. Without proper management, the increased network utilization will reduce the performance of applications that utilize these networks. Scalable high performance switching fabrics are usually “cell-based,” meaning that incoming frames are segmented into shorter segments (referred to as packets, or cells) at the ingress side, and reassembled at the egress side of the fabric. These high performance switching fabrics usually perform multi-path routing, and can deliver segments out-of-order to the egress side. The memory that is normally needed to perform reassembly increases with the number of fabric ports and also increases with as the maximum frame size increases. Accordingly, using smaller reassembly buffers, and flow controlling them in a hop-by-hop manner, can easily lead to deadlock.
A protocol that has been used in scalable high performance switching fabrics is an end-to-end credit protocol. Generally, end-to-end credit protocols include a source controller that sends a request to an end-point controller in order to receive permission, or credits, to send packets to the end-point controller. The end-point controller maintains a request counter, where each request corresponds to an appropriately set buffer space unit. A common problem experienced by typical end-to-end credit protocols is reassembly-induced deadlocks. For example, when an end-point controller grants a number of credits to a source controller and has allocated its entire buffer space to a number of source controllers, but none of the source controllers has enough credits to transmit the packets required to inject into the fabric an entire frame.